programación de robots en vrs con el lenguaje industrial rapid

18
DISA – UPV ROBÓTICA Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 1 Departamento de Ingeniería de Sistemas y Automática Universidad Politécnica de Valencia FACULTAD DE INFORMÁTICA ROBÓTICA Programación de robots en VRS con el lenguaje industrial RAPID Martin Mellado Arteche Noviembre, 2008

Upload: ruben-nina

Post on 04-Jul-2015

1.398 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 1

Departamento de Ingeniería de Sistemas y Automática Universidad Politécnica de Valencia

FACULTAD DE INFORMÁTICA

ROBÓTICA

Programación de robots en VRS con el lenguaje industrial RAPID

Martin Mellado Arteche

Noviembre, 2008

Page 2: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 2

1. Introducción En el ámbito de la robótica industrial cada vez cobra mayor importancia la programación fuera de línea (off-line programming) en la implantación de robots en sistemas de producción en serie. Al crear programas de robot fuera de línea surge la necesidad de comprobar el correcto funcionamiento de los mismos, siendo de gran utilidad los entornos de simulación gráfica de robots como el VirtualRobot Simulator (VRS) creado por el Departamento de Ingeniería de Sistemas y Automática (DISA) de la Universidad Politécnica de Valencia. EdtRAPID está creado como una herramienta externa para VRS comunicándose con este último por medio de una librería de acceso dinámico dll llamada Virtual Robot External Access Library (VREAL). Esta librería proporciona acceso a algunas funcionalidades del entorno de simulación a programas desarrollados en lenguaje C o C++, como es el caso de EdtRAPID. Haciendo uso del archivo de definición vreal.h y del archivo de especificación de acceso a la librería vreal.lib, la aplicación EdtRAPID tiene acceso al entono de simulación en tiempo de ejecución. Finalidad y ámbito de aplicación La creación de una aplicación de programación fuera de línea surge como solución a la necesidad de disponer de un entorno de simulación de robots para docencia en los Departamentos de Ingeniería de Sistemas y Automática (DISA) de la Universidad Politécnica de Valencia y de la Universidad de Vigo*. El entorno de simulación elegido es el VirtualRobot Simulator debido a la calidad del software y a su gratuidad. La programación de movimientos de un robot en este simulador se realiza mediante programas creados en lenguaje C o C++ que necesitan ser compilados para su uso. Este sistema convierte la simulación de movimientos en un ejercicio de creación de programas en un entorno de desarrollo, quedando en un segundo plano el enfoque industrial que se necesita en una aplicación de este tipo, pensada para ser utilizada en docencia de asignaturas relacionadas con la robótica. En toda simulación se busca una aproximación a la realidad con un margen de precisión determinado, y en este caso la finalidad de la aplicación es que los alumnos comprendan la implantación de robots en sistemas industriales y los pasos a seguir en el diseño de células de trabajo. En este punto surge otra necesidad y es la de un intérprete de comandos al que se le pasen parámetros y con estos actúe sobre el entorno de simulación. Si además se enfoca este intérprete hacia una aplicación de prototipado rápido surge una nueva necesidad y es la de interpretar código complejo que contenga control sobre la secuencia de ejecución y que además sea reutilizable en la programación de un robot real. A falta de un lenguaje estándar de programación textual de robots se adopta el lenguaje RAPID de ABB debido a lo extendido que está en la industria la implantación de robots de esta marca. De esta forma se definen los objetivos finales de la aplicación EdtRAPID consistentes en proporcionar una herramienta externa al VRS que permita realizar programas fuera de línea en lenguaje RAPID de ABB así como la simulación de movimientos por medio de la ejecución de dichos programas. 2. El lenguaje RAPID de ABB 2.1. El Lenguaje RAPID RAPID fue desarrollado para solucionar las necesidades de: • Incremento de flexibilidad. • Mayor potencia demandada por la industria.

* Parte de este documento se ha extraído de la documentación preparada por Diego Pérez Losada, del Departamento de Ingeniería de Sistemas y Automática (DISA) de la Universidad de Vigo, que ha implementado la aplicación EdtRAPID.

Page 3: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 3

Fue introducido en el mercado en la primera mitad de los años noventa y representó un enorme avance para ABB. Hasta ese momento ABB había ofrecido a sus clientes un lenguaje de programación relativamente simple, el ARLA, el cual había sido diseñado bajo la filosofía de una aplicación fácil y rápida. Esto presentó el inconveniente de que los grandes clientes descubrieron sus limitaciones muy rápido al intentar realizar tareas complejas. Para programar en ARLA era necesario disponer de una controladora de robot, o lo que es lo mismo, no tenía herramientas de desarrollo externas y el código era encriptado. No era posible ver el programa desde un ordenador personal o computadora, aunque esto no era un problema excesivamente significativo debido al precio de los ordenadores en la época. Características del lenguaje RAPID El lenguaje RAPID está formado por un conjunto de instrucciones que describen las tareas a realizar por el robot. La descripción de tareas y no de movimientos implica la existencia de una amplia lista de instrucciones, a las que hay que sumarle las funciones. Generalmente, las instrucciones llevan asociado una serie de argumentos que definen la acción a realizar, pudiendo estar definidos de diferentes formas: • Como un valor numérico. • Como una referencia a un dato. • Como una expresión. • Como una llamada a una función. • Como una cadena de caracteres. El lenguaje RAPID es altamente estructurado, formado por un conjunto de módulos que pueden contener a su vez procedimientos, funciones y rutinas. Un programa está formado por un conjunto de módulos, en uno de ellos (será el módulo principal de programa) debe existir un procedimiento llamado main, que se corresponderá con el inicio de ejecución de instrucciones. Procedimientos Los procedimientos consisten en un conjunto de instrucciones que pueden ser llamados desde otros procedimientos. Se pueden pasar parámetros en las llamadas a procedimientos, pero no se devuelve ningún tipo de dato. Funciones Las funciones, a diferencia de los procedimientos, devuelven un valor de tipo concreto y suelen utilizarse como argumento de una instrucción. Rutinas Las rutinas son un tipo especial de procedimiento que proporciona una forma de atender a las interrupciones. Si se produce una interrupción y está atendida dentro del programa mediante una rutina, esta se ejecuta con prioridad. Control de flujo El control de flujo de ejecución se realiza mediante sentencias de control similares a las existentes en cualquier lenguaje de alto nivel. Existen sentencias de repetición de instrucciones (bucles de ejecución) y sentencias de bifurcación (toma de decisiones). Datos Los tipos de dato se pueden definir como constantes CONST o como variables VAR. Las constantes sólo pueden ser modificadas manualmente debiendo ser inicializadas en el momento de declararlas. Las variables al contrario, son manejadas, normalmente, por el propio programa. Un tipo especial de variables son los datos persistentes PERS que se almacenan en la zona de memoria persistente, se mantiene el tipo de dato al salir del programa o ante una pérdida de alimentación. Expresiones Las expresiones pueden ser aritméticas o lógicas, especifican la evaluación de un valor y suelen utilizarse en los siguientes casos:

Page 4: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 4

• En instrucciones de asignación. • Como una condición de una sentencia de control. • Como argumento de una instrucción. • Como argumento de una llamada a una función. Los operadores aritméticos y lógicos utilizados en la evaluación tienen asignada una prioridad dentro de la cadena, pudiendo ser reasignada mediante la utilización de paréntesis. En las expresiones se pueden incluir datos o referencias a datos declarados previamente. Gestión automática de errores Los errores en tiempo de ejecución pueden ser gestionados desde el programa, evitando tener que interrumpir la ejecución. Estos errores pueden ser detectados por la controladora del robot, como puede ser la división de un tipo de dato por cero, o pueden ser detectados por el propio programa ante tipos de dato incorrectos. Multitarea RAPID dispone de un modo multitarea para la ejecución de programas en pseudoparalelo. Un programa ejecutado en paralelo puede situarse en primer o en segundo plano respecto al programa principal, también pueden estar al mismo nivel. El plano en el que se encuentre durante su ejecución determina su prioridad. Se pueden definir hasta 10 tareas en pseudoparalelo, cada una formada por un conjunto de módulos, similar a los programas normales. Todos los módulos se consideran locales en cada una de las tareas. Las constantes y variables se consideran locales dentro de una tarea, al contrario que las variables persistentes, que se consideran globales para todas las tareas. Si existen dos tipos de dato diferentes con el mismo nombre en módulos de tareas distintas y se trata de un valor persistente, se produce un error en tiempo de ejecución. Cada tarea dispone de su propia gestión de interrupciones. Las tareas poseen mecanismos de sincronización y comunicación entre ellas. Existen una serie de restricciones en la utilización del modo multitarea: • No se pueden combinar programas en paralelo con un PLC. No se puede atender a una

interrupción de un programa ejecutado en segundo plano mientras el programa en primer plano se encuentra ocupado.

• Sólo existe una unidad de programación, con lo cual se pueden mezclar los mensajes escritos en pantalla por las distintas tareas.

• Las instrucciones de movimiento del robot sólo pueden ejecutarse en la tarea principal. • La ejecución de tareas en pseudoparalelo queda detenida cuando el usuario u otras tareas

hacen uso del sistema de archivos. • La unidad de programación Teach Pendant no tiene acceso a tareas distintas de la

principal. Por ello, el desarrollo de programas en RAPID para manejar otras tareas sólo se permite si se carga el código en la tarea principal o fuera de línea.

Interrupciones Las interrupciones son eventos definidos por el programa e identificados por números que deben estar predefinidos con anterioridad a la ejecución. El número máximo de interrupciones por cada programa es de 70, estando limitada la CPU a un máximo de 100 interrupciones. Durante el transcurso de le ejecución de un programa, si se activa una interrupción, se detiene la ejecución secuencial de las instrucciones y se ejecuta la rutina TRAP correspondiente a la atención de la interrupción. Una vez finalizada la ejecución de la rutina se retoma el programa en el punto en el cual fue dejado. Señales La controladora de un robot puede tener asociadas distintas placas con señales de entrada/salida. Cada una de las placas dispondrá de varios canales físicos analógicos o digitales que deben estar conectados a señales lógicas referenciadas desde el programa. Estas señales son definidas en la controladora, fuera del programa en lenguaje RAPID. Un canal físico puede tener asociadas distintas señales lógicas, pero no está permitido asociar una misma señal lógica a diferentes canales físicos.

Page 5: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 5

2.2. Sintaxis del Lenguaje RAPID RAPID de ABB es un lenguaje textual interpretado de alto nivel diseñado para la programación de robots industriales. Consiste básicamente en un conjunto de instrucciones que describen la actividad del robot. Estas instrucciones pueden llevar asociados un conjunto de argumentos que definen la acción a realizar por el robot. Los argumentos se pueden especificar mediante: • Valor numérico • Referencia a un dato • Como una expresión • Como una llamada a una función • Como un valor de cadena de caracteres En el programa las instrucciones se incluyen dentro de procedimientos, funciones o rutinas. Los procedimientos PROC se refieren a conjuntos de instrucciones a ejecutar secuencialmente, un programa está formado por al menos un procedimiento principal denominado main desde el cual se pueden realizar llamadas a otros procedimientos. Las funciones FUNC devuelven un valor de tipo de dato concreto utilizándose como parámetros de las instrucciones. Las rutinas TRAP son un tipo de procedimientos particulares para atender a las interrupciones. Determinadas instrucciones como pueden ser la definición de tipos de dato se pueden realizar fuera de los procedimientos, funciones o rutinas. Estos tipos de dato pueden estar definidos como constantes CONST o variables VAR. Un tipo particular de variables son los datos persistentes PERS que se almacenan en una zona de memoria que mantiene la información ante un corte de alimentación. Las variables pueden ser modificadas en la ejecución del programa y no es necesario inicializarlas cuando se declaran, las constantes al contrario no se pueden modificar y se inicializan a un valor en el momento de declararlas. El código se estructura dentro de un programa en módulos MODULE, los cuales pueden ser cargados en tiempo de ejecución desde la memoria de almacenamiento o eliminarse de la memoria de programa. Esta estructura viene dada por la limitación de memoria de la controladora del robot, pudiendo de esta manera manejar grandes programas con recursos limitados. El control de flujo en la ejecución de programa dentro de los procedimientos, funciones y rutinas se realiza mediante bucles FOR y WHILE o instrucciones de bifurcación IF, Compact IF, TEST y GOTO. Estructura de un programa RAPID Un programa RAPID se compone de un módulo que se guarda en un fichero ASCII, normalmente con extensión .prg. La sintaxis de un módulo es: MODULE <Nombre del módulo> … ENDMODULE

Un módulo se compondrá necesariamente de un procedimiento main y opcionalmente de otros procedimientos (desde un procedimiento se puede llamar a otro, excepto al main): MODULE <Nombre del módulo> PROC main() … ENDPROC PROC <Nombre procedimiento>() … ENDPROC … ENDMODULE

Page 6: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 6

Los datos de tipo constante se definen según: CONST <tipo constante> <Nombre constante> := <valor> Los datos de tipo variable se definen según: VAR <tipo variable> <Nombre variable> := <valor> Como tipos de datos se tiene: • num: dato numérico • robtarget: localización del robot mediante [pos,confdata,cuaternio,extjoint] • pos: coordenadas cartesianas del robot, es decir, valores [x,y,z] • confdata: configuración de los ejes mediante 4 valores enteros [cf1,cf2,cf3,cf4] • orient: orientación por medio de un cuaternio [q0,q1,q2,q3] • extjoint: los ejes externos del robot, mediante seis valores, que normalmente son: [9E+09, 9E+09, 9E+09, 9E+09, 9E+09, 9E+09]. 2.3. Limitaciones de la aplicación EdtRAPID El intérprete de EdtRAPID sólo implementa las instrucciones y tipos de datos más usados. Utiliza solamente dos módulos de programa, uno de sistema donde se encuentran definidos los tipos de dato utilizados generalmente y los datos asociados a la herramienta del robot, y otro de usuario donde se debe definir el procedimiento principal main que siempre debe existir en un programa en lenguaje RAPID. Las instrucciones implementadas se muestran a continuación: Operaciones con variables “:=”. Asignación <Nombre variable> := <expresión> Las expresiones interpretables son sencillas, sin paréntesis Incr. Incrementar una variable en 1:

Incr <Nombre variable> Decr. Decrementar una variable en 1:

Decr <Nombre variable> Add. Suma un valor numérico a una variable:

Add <nombre variable, valor> Clear. Borrar un valor numérico:

Clear <nombre variable> Control de flujo de programa IF. Definición de sentencia IF:

IF <condición> THEN <instrucciones>

ENDIF o también:

IF <condición> THEN <instrucciones>

ELSE <instrucciones>

ENDIF FOR. Definición de bucle FOR:

FOR <índice> FROM <inicio> TO <final> DO <instrucciones>

ENDFOR o también:

Page 7: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 7

FOR <índice> FROM <inicio> TO <final> STEP <paso> DO <instrucciones>

ENDFOR EXIT. Finalizar la ejecución de un programa.

EXIT WHILE. Definición del bucle WHILE:

WHILE <condición> DO <instrucciones>

ENDWHILE Break. Interrumpir la ejecución del programa:

Break Escritura en pantalla TPWrite. Escribir en la unidad de programación:

TPWrite <Cadena a mostrar en la consola> TPErase. Borra el texto mostrado en la paleta de programación:

TPErase Control de unidades mecánicas ActUnit. Activar una unidad mecánica:

ActUnit <Nombre unidad mecánica> DeactUnit. Desactivar una unidad mecánica:

DeactUnit <Nombre unidad mecánica> Control de salidas digitales y analógicas Set. Activar una señal digital de salida:

Set <nombre señal> Reset. Desactivar una señal digital de salida:

Reset <nombre señal> SetDO. Cambiar el valor de una señal digital de salida:

SetDO <Nombre señal, valor> InvertDO. Invertir el valor de una señal de salida digital:

InvertDO <Nombre eñal> SetAO. Cambiar el valor de una señal analógica de salida:

SetAO <Nombre señal, valor> Control de esperas WaitTime. Esperar una cantidad de tiempo determinado:

WaitTime <tiempo en segundos> WaitDI. Esperar hasta que se activa o desactiva una señal digital de entrada:

WaitDI <Nombre señal, valor> WaitDO. Esperar hasta que se activa o desactiva una señal digital de salida:

WaitDO <Nombre señal, valor> WaitUntil. Esperar hasta que se cumple una condición:

WaitUntil <Condición fin de espera>

Page 8: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 8

Instrucciones de movimiento del robot a) Movimientos con trayectorias no lineales (libres) MoveJ. Mover el robot a un punto determinado describiendo una trayectoria no lineal (libre):

MoveJ <robtarget, speeddata, zonedata, tooldata> MoveJDO. Mover el robot a un punto determinado describiendo una trayectoria no lineal (libre) y activar una señal digital de salida al finalizar el movimiento:

MoveJDO <robtarget, speeddata, zonedata, tooldata, señal, numero> MoveJSync. Mover el robot a un punto describiendo una trayectoria no lineal (libre) y llamar a un procedimiento al finalizar el movimiento:

MoveJSync <robtarget, speeddata, zonedata, tooldata, nombre proc> b) Movimientos con trayectorias lineales (línea recta) MoveL. Mover el robot a un punto determinado describiendo una trayectoria lineal (línea recta):

MoveL <robtarget, speeddata, zonedata, tooldata> MoveLDO. Mover el robot a un punto describiendo una trayectoria lineal (línea recta) y activar una señal digital de salida al finalizar el movimiento:

MoveLDO <robtarget, speeddata, zonedata, tooldata, señal, numero> MoveLSync. Mover el robot a un punto describiendo una trayectoria lineal (línea recta) y llamar a un procedimiento al finalizar el movimiento:

MoveLSync <robtarget, speeddata, zonedata, tooldata, nombre proc> 3. El editor de RAPID EdtRAPID 3.1. Manual de EdtRAPID EdtRAPID es una herramienta de prototipado rápido diseñada para programar robots fuera de línea en lenguaje RAPID. Dispone de un editor de texto para desarrollar el código de programa que posteriormente se puede simular en el entrono VRS a través de un intérprete que posee herramientas propias para el control de la ejecución. Además de las utilidades necesarias para programar un robot, EdtRAPID dispone de un sistema de control de ejes externos que permite simular el transporte de piezas mediante cintas de modo automático, así como la manipulación de objetos por medio de las herramientas asociadas al robot. En esta sección se muestra la información relacionada con las herramientas del editor y con sus opciones de configuración, comenzando por una introducción obre la interfaz gráfica centrándose posteriormente en el manejo de la aplicación. Cada una de las partes se describe en detalle siguiendo ejemplos de configuración y ejecución de programas en una célula de trabajo. Interfaz gráfico de usuario La aplicación está dividida en tres bloques formados por el editor de texto plano, el árbol de configuración de robots de la célula de trabajo y la interfaz de ejecución de programa. Al arrancar la aplicación siempre se muestra la barra de configuración a la izquierda y la zona de edición de programa a la derecha como se puede observar en la Figura 1, aunque esto es personalizable puesto que la barra se puede poner en cualquier lugar, incluso dejarla flotante como en la Figura 2. En la parte superior se muestra la barra del menú principal de la aplicación y dos barras de herramientas, la primera de ellas correspondiente al editor y la segunda a la interfaz de conexión con VRS. Existen algunas herramientas más como son otra barra de organización de ventanas en el editor de texto o el menú para cargar o guardar células de trabajo de VRS que se explicarán en detalle posteriormente.

Page 9: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 9

Figura 1: Vista general Figura 2: Barra Flotante

EdtRAPID puede usarse como editor de texto plano estando desconectado de VRS pero de esta forma quedan deshabilitadas las herramientas de captura de posiciones del robot, así como todas las relacionadas con la configuración de robots y células de trabajo. El modo de uso normal es estar conectado con un entorno de simulación ya sea para la edición de un programa RAPID o para la simulación del mismo, pudiendo aprovechar todas las posibilidades que ofrece el editor en lo referente a la captura de posiciones de los robots del entrono de simulación. Todas las herramientas referentes a configuración o definición de la célula de trabajo o del entrono de programación de los robots se encuentran deshabilitadas mientras el editor está desconectado, y algunas de ellas sólo se pueden utilizar en conexión local a VRS, quedando bloqueadas cuando se establecen conexiones remotas. Conexión con VRS La interfaz de conexión con el entorno de simulación se controla con los botones de la barra de herramientas de conexión. Al ejecutar el programa esta barra se muestra encima del árbol de configuración. Para conectarse con VRS se pulsa el primer botón de la barra mostrada en la Figura 3 que se encuentra activo. Las funciones que desempeñan cada uno de los botones (de derecha a izquierda): • Conectar con VRS • Desconectar de VRS • Actualizar elementos del entrono en el árbol de configuración

• Capturar posición de robot

• Ejecutar programa Al pulsar el botón de conectar aparecerá un diálogo como el mostrado en la Figura 4 con dos opciones, la primera de ellas para establecer una conexión con VRS ejecutado en la misma máquina que el editor y una segunda opción para conectar el editor a un ordenador remoto que ejecute VRS con funcionamiento en modo remoto. En caso de realizar una conexión sobre un servidor remoto será necesario especificar la dirección IP del ordenador donde se ejecute VRS. Para desconectar EdtRAPID de VRS sólo es necesario pulsar el botón desconectar (el segundo botón comenzando por la izquierda de la barra de conexión). Una vez desconectado el editor se actualizará el estado del árbol de configuración, perdiéndose toda la información asociada a los robots que esté previamente definida. Es conveniente guardar los cambios antes de

Page 10: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 10

desconectar el editor.

Figura 3: Barra de conexión Figura 4: Dialogo de conexión

Editor de texto EdtRAPID dispone de un editor de texto multidocumento con resaltado de código RAPID. El código fuente se guarda en formato de texto plano siendo conveniente guardarlo en archivos con extensión “.prg”. En la Figura 5 se puede observar el aspecto que presenta el editor con un documento que contiene código fuente.

Figura 5: Edición de un documento simple

El editor reconoce dinámicamente el lenguaje RAPID resaltándolo con colores. La correspondencia de comandos y colores es la siguiente: • Azul: Palabras reservadas del lenguaje utilizadas para definir la secuencia de ejecución del

programa y definición de datos. • Marrón: Tipos de dato. • Verde: Instrucciones de asignación. • Violeta: Instrucciones del lenguaje. • Granate: Cadenas numéricas. • Rojo: Cadenas de caracteres. • Gris: Comentarios que no son leídos por el intérprete de código.

Page 11: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 11

Los nombres de datos y funciones definidas por el usuario no son coloreados por el editor, quedando de esta forma en negro. La tabulación de las diferentes líneas también debe ser a cargo del programador. Herramientas de edición La barra de herramientas principal del entorno es la del editor de texto tal como se muestra en la Figura 6. A continuación se muestra la descripción de las funciones implementadas (de izquierda a derecha): • Nuevo documento. • Abrir documento. • Guardar documento. • Guardar documento como. • Cortar texto seleccionado. • Copiar texto seleccionado. • Pegar texto del portapapeles. • Deshacer la última acción. • Rehacer la acción anteriormente deshecha. • Buscar cadena de texto. • Buscar siguiente cadena. • Buscar cadena anterior. • Reemplazar cadena de texto. • Imprimir documento. • Acerca de EdtRAPID. • Introducir/Eliminar marcador. • Ir al marcador siguiente. • Ir al marcador anterior. • Eliminar todos los marcadores del documento.

Figura 6: Barra de edición

Como se puede ver las herramientas de edición son las habituales de cualquier editor con lo cual no se describirá en detalle su funcionamiento. Marcadores Los marcadores se utilizan para señalar la situación de determinadas líneas de código durante la edición. Un documento con marcadores definidos se muestra en la Figura 7. Para insertar un nuevo marcador en una línea hay que situar el cursor de texto en dicha línea y pulsar el botón Introducir marcador. Para eliminarlo se pulsa nuevamente el mismo botón. Si se desea ir de un marcador a otro se utilizan los botones de desplazamiento entre marcadores y para eliminar todos los marcadores que contiene el texto se utiliza el último botón de la barra de edición de texto. Los marcadores no se incluyen en el documento de texto guardado, ni tienen ninguna utilidad en la ejecución de código, sólo se utilizan para señalar posiciones dentro del programa de robot. Una utilidad de los marcadores es que si se inserta un marcador en cada cabecera de un procedimiento, incluido el main, será fácil ir pasando de un procedimiento a otro al editar el programa pasando de marcador a marcador.

Page 12: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 12

Figura 7: Documento con marcadores

Captura de posiciones del robot Para introducir el código referente a la posición actual de un robot se utiliza el botón de captura de la barra de conexión. Antes de pulsar el botón es necesario situar el cursor de texto del documento activo en el lugar de inserción del código y tener seleccionado el robot deseado en el árbol de configuración.

Figura 8: Capturar punto

Una vez hecho esto último se pulsa el botón y aparece un diálogo como el mostrado en la Figura 8. La ventana de diálogo dispone de un campo de texto para introducir el nombre del punto a capturar. Un vez introducido el nombre se pulsa aceptar y de forma automática se inserta el código fuente correspondiente a la posición del robot tal como se muestra en la Figura 9.

Figura 9: Código de la posición capturada

La posición de un robot está representada en lenguaje RAPID por el tipo de dato robtarget que a su vez está formado por otros cuatro tipos de dato, pos para definir las coordenadas cartesianas del robot, confdata que define la configuración de los ejes, orient para definir la orientación por medio de un cuaternio y extjoint que representa los ejes externos del robot. Célula de Trabajo La célula de trabajo de los robots se define en el simulador VRS pero debido a que este no dispone de herramientas para guardar las posiciones de los robots cargados en el entorno de simulación se incluye una herramienta en EdtRAPID para poder guardar los trabajos creados.

Page 13: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 13

En el menú de la aplicación simulador se dispone de dos funciones (ver Figura 10). La primera de ellas Cargar célula como su propio nombre indica es para cargar una célula de trabajo en el simulador al que esté conectado EdtRAPID, en caso de estar desconectado ambas opciones del menú simulador quedarán deshabilitadas. Además sólo se pueden cargar células de trabajo en entornos locales, si la conexión es remota no se puede modificar la célula. La segunda acción Guardar célula se puede ejecutar tanto en un entorno local como remoto siendo necesario en ambos casos disponer de todos los archivos que componen la célula en el ordenador donde se ejecuta EdtRAPID.

Figura 10: Menú simulador

Es necesario definir una serie de parámetros en una ventana de diálogo como la mostrada en la Figura 11. En la parte izquierda hay una lista con los elementos que contiene la célula, para cada una de ellos es necesario especificar la dirección del archivo de dicho elemento. Para ello se selecciona el nombre en la lista y se pulsa el botón situado a la derecha del texto cambiar archivo para seleccionar una nueva ruta. Una vez asignada la nueva dirección el color del elemento cambia a gris claro (ver elementos 1 y 3 de la Figura 11). Cuando toda la lista tenga asignada una dirección se activará el botón aceptar. También se puede guardar opcionalmente el entorno de la célula denominada como environment en el VRS, para ello se debe seleccionar la dirección del archivo que contiene el entorno pulsando el botón situado a la derecha del texto Entorno. La célula de trabajo se guarda en un archivo de texto plano con extensión .cdt y se crea una carpeta con el mismo nombre donde se guardan los archivos de todos los elementos que contiene la célula y del entorno si se eligió la opción en la ventana de diálogo Guardar célula.

Figura 11: Guardar célula

Ejecución de programa La ejecución de programa es independiente del editor de texto, no se ejecuta directamente el código que se está editando, pero sí es necesario tener definida la configuración de los robots. Una vez definida la configuración ya se pueden ejecutar programas sobre el simulador por medio del botón Ejecutar programa de la barra de conexión como se puede observar en la Figura 12.

Page 14: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 14

Figura 12: Botón ejecutar

Antes de lanzar un programa es necesario seleccionar un robot en el árbol de configuración tal como se muestra en la Figura 13 (marcar la casilla que se encuentra a la izquierda del nombre). En caso de tener varios robots seleccionados simultáneamente se ejecutará el programa sobre el primero que esté marcado.

Figura 13: Seleccionar robot

Al pulsar el botón Ejecutar programa aparece una ventana de diálogo como la mostrada en la Figura 14. Este diálogo dispone de ocho botones de herramienta en la parte derecha que se corresponden con las acciones (de arriba hacia abajo): • Ejecutar continuo/Reanudar: Con este botón se inicia la ejecución continua de un

programa sobre el simulador. Es una ejecución repetida de modo cíclico, de forma que el robot ejecutará y repetirá el procedimiento main hasta que se indique una parada, se produzca un error o bien se detenga o pause la ejecución del programa. Si el programa se encuentra pausado se reanuda la ejecución.

• Ejecutar paso a paso: Modo de ejecución paso a paso (instrucción por instrucción). Para ejecutar una instrucción el programa pide verificación debiendo pulsar un botón.

• Ejecutar siguiente paso: Ejecutar la siguiente instrucción cuando se está en modo de ejecución paso a paso.

• Pausar ejecución: Pausar la ejecución cuando se está en modo de ejecución continuo. • Parar ejecución: Detiene el programa en ejecución, tanto si se trata de modo continuo o

paso a paso. • Ver la consola: Muestra la consola de programación. En esta pantalla se imprimen los

errores de programa y las incidencias de ejecución. • Resetear señales: Pone todas las señales del robot asociado a la ejecución a su valor

mínimo o a cero en caso de tratarse de señales digitales. Es una función muy importante para no perder sincronización en la ejecución de programas.

• Cerrar ventana: Finaliza el modo ejecución.

Figura 14: Dialogo ejecutar programa

Además se dispone de dos campos para seleccionar el módulo base y el código fuente: • Módulo base: es el archivo que contiene el módulo de sistema con la definición de la

herramienta y constantes generales

Page 15: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 15

• Código fuente: Es el archivo que contiene el código de programa a ejecutar, generalmente un fichero prg que debe contener el procedimiento main.

En la Figura 15 se muestra un ejemplo de ejecución de un programa con errores de código. Se puede observar como en la primera lista se imprimen los mensajes relacionados con la ejecución y en la consola se dan los mensajes de error. Si no suceden incidencias durante la ejecución del programa, en la consola sólo se imprimirán los mensajes insertados como cadenas de caracteres desde el código RAPID.

Figura 15: Ejemplo de ejecución de programa

4. Programación de robots en VRS mediante EdtRAPID 4.1. Edición y ejecución de un programa Para realizar el primer programa de un robot en VRS mediante EdtRAPID se parte de la siguiente situación: • El simulador VRS debe estar en ejecución y sin ningún robot ni entorno cargado. En caso

contrario, cierra el entorno y todos los robots cargados con el botón correspondiente de VRS Loader.

• Ejecutar EdtRAPID mediante la opción File>>Run Application. En el directorio Users\EdtRAPID se encontrará el ejecutable EdtRAPID. También se puede ejecutar directamente desde el operativo.

• Intenta ajustar el tamaño de las ventanas de ambas aplicaciones para que se vean las dos en pantalla.

Ahora realiza las siguientes acciones en EdtRAPID: 1. Establece una conexión con VRS mediante el botón Conectar y selecciona el tipo de

conexión como local. 2. Con la opción Simulador>>Cargar Célula elige el fichero EdtRAPID\Tutorial\Ejemplo1

(extensión cdt). Comprueba que se ha cargado en VRS un robot y una mesa con una pieza.

3. Con Archivo>>Abrir entorno selecciona el entorno de trabajo pr001 (extensión edr). 4. En el fichero que está abierto para edición, introducir el siguiente código (sin olvidar los

punto y coma al final de las líneas):

Page 16: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 16

MODULE EJEMPLO VAR num i := 0; ! Procedimiento principal PROC main() TPWrite "En ejecución"; WaitTime 1; Incr i; IF i = 5 THEN TPWrite “Programa repetido 5 veces”; WaitTime 2; TPErase; i := 0; ENDIF ENDPROC ENDMODULE

5. Una vez introducido, salvar con nombre Ejemplo.prg. 6. Asegurarse de que está seleccionado el robot ABB IRB140 (marcada la casilla que se

encuentra a la izquierda del nombre) 7. Pulsa el botón de Ejecutar programa que abre el diálogo para ejecución de programas. A

partir de este instante, se podrá editar el programa en EdtRAPID, salvarlo a fichero, cargarlo en el diálogo Ejecutar programa y ejecutarlo sobre VRS

8. Selecciona el fichero Ejemplo como Código fuente. 9. Pulsa el botón de Ver consola 10. Pulsa el botón Ejecución continua 11. Observa la ejecución. Si se produce un error, deberás cerrar el diálogo para ejecución de

programas y editar el programa para resolver el error, repitiendo el proceso. Si una instrucción no se ejecuta, por ejemplo no escribe texto, revisa que no olvidaste el “;” al final de la línea. Para comprobarlo, prueba a cometer errores, como por ejemplo cambiar las instrucciones anteriores a TPErases; o Incr a; para ver lo que pasa*.

4.2. Programación de la herramienta del robot Elige un archivo nuevo o parte del anterior para introducir el siguiente programa que tiene dos procedimientos adicionales, uno para abrir la pinza y otro para cerrarla.

MODULE EJEMPLO ! Procedimiento principal PROC main() ! Introduce aquí el control de la pinza ENDPROC ! Procedimiento para abrir pinza PROC Abrir() Set abrirPinza; Reset cerrarPinza; ENDPROC ! Procedimiento para cerrar pinza PROC Cerrar() Set cerrarPinza; Reset cerrarPinza; ENDPROC ENDMODULE

* El intérprete de EdtRAPID tampoco es completo, por lo que a veces una instrucción no se ejecuta pero no muestra error.

Page 17: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 17

Observa que se han definido tres procedimientos en el módulo, el principal (main) y dos más, pero por ahora sólo se ejecutará el principal, ya que los otros dos no son llamados por el principal. Para que se ejecute el procedimiento de abrir pinza se usará la instrucción Abrir; Y de forma similar, para cerrar la pinza se realizará la llamada siguiente: Cerrar; Ejercicio 1: Modifica el programa anterior para que la pinza esté abierta 2 segundos y cerrada 3 segundos. 4.3. Captura y definición de localizaciones de robot Para la programación de movimientos del robot en un programa RAPID se deben definir localizaciones (robtarget) para luego usarlas en instrucciones MoveJ o MoveL como localización destino del movimiento. Si bien se puede definir una localización tecleándolas de forma adecuada, la manera más fácil es mover el robot en VRS con el VRS TeachPendant o cualquier otra aplicación (VRS PartHandling por ejemplo) y capturar las localizaciones desde EdtRAPID. Para ello hay que hacer lo siguiente: • Mover en VRS el robot a la localización deseada para capturarla en EdtRAPID • En EdtRAPID, asegurarse de tener seleccionado el robot para el que se captura la

localización • Situar el cursor del editor en el lugar donde se desea introducir la localización.

Normalmente, se suelen definir las localizaciones al principio del fichero, fuera de los procedimientos para que se puedan referenciar desde cualquier procedimiento.

• Pulsar el botón Capturar punto e introducir un nombre, por ejemplo home. • Se introducirán 6 líneas para definir la localización de tipo robtarget, que tendrá de nombre

rob_home • En los procedimientos se podrán añadir instrucciones que ejecuten movimientos del robot

usando rob_home como localización destino del movimiento Ejercicio 2: Define en el programa anterior la localización de home (synchro en VRS) y dos localizaciones más pos1 y pos2. Para ello, muévelo antes con el VRS TeachPendant. Se pueden definir se forma sencilla localizaciones relativas unas de otras, en las que sólo tengan cambio en las coordenadas cartesianas del punto, pero mantengan igual orientación. Supuesto que se ha definido para un robot la localización pos1 de la siguiente forma: ! Posición del pos1 CONST pos pos_pos1:=[725.000000,0.000000,712.000000]; CONST orient ori_pos1:=[0.382683,0.000000,0.923880,0.000000]; CONST confdata conf_pos1:=[0,0,0,0]; CONST extjoint ejes_pos1:=[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]; CONST robtarget rob_pos1:=[pos_pos1,ori_pos1,conf_pos1,ejes_pos1]; Si se desea definir una nueva localización de aproximación a esta localización con, por ejemplo, una distancia de aproximación de 100mm en el eje Z, bastará con definir una nueva posición y luego una localización con los valores anteriores y la nueva posición, es decir: ! Posición del approxpos1 CONST pos pos_approxpos1:=[725.000000,0.000000,812.000000]; CONST robtarget rob_approxpos1:=[pos_approxpos1,ori_pos1,conf_pos1,ejes_pos1]; Nota que se ha modificado únicamente la coordenada Z en pos_approxpos1 con relación a la definición de pos_pos1, mientras que para definir rob_approxpos1 se han usado los tres valores ori_pos1,conf_pos1,ejes_pos1 anteriores.

Page 18: Programación de Robots en VRS con el lenguaje industrial RAPID

DISA – UPV ROBÓTICA

Programación de robots en VirtualRobot mediante el lenguaje industrial RAPID - 18

Ejercicio 3: Define en el programa anterior localizaciones de aproximación a pos1 y pos2. 4.4. Programación de movimientos del robot Todas las instrucciones de movimiento tienen al menos cuatro parámetros fundamentales para su interpretación: • La localización a la que mover el robot. Este parámetro será un dato definido según el

proceso anterior. • La velocidad del movimiento. El robot se moverá más rápido cuanto mayor sea. Los

posibles valores están definidos en el fichero basesys.txt, pero puede ser suficiente con usar, por ejemplo, los valores v100 (muy lento), v500, v1000, v3000, v5000 y v7000 (muy rápido).

• La fineza con la que se exige que realice el movimiento, entendiendo como tal el margen de desviación que se le permite al robot en una localización. Los posibles valores están definidos en el fichero basesys.txt, pero puede ser suficiente con usar, por ejemplo, los valores fine (puntos muy precisos), z10, z30, z50, z100, z200 (para puntos de paso) aunque en VRS no se llega a simular el efecto de este parámetro.

• El sistema de coordenadas de herramienta con el que se realiza el movimiento. Los posibles valores están definidos en el fichero basesys.txt y en principio sólo se dispone del valor tool0.

Ejemplos de instrucciones correctas son: MoveJ rob_home,v7000,z100,tool0; MoveL rob_pos1,v1000,z30,tool0; Ejercicio 3: Modifica el programa anterior para que mueva el robot entre las localizaciones usando la instrucción MoveJ. Ejercicio 4: Con ayuda de la traza de VRS, verifica la diferencia cuando el robot se mueve entre estas localizaciones con MoveJ y con MoveL. Ejercicio 5: Haz que el robot coja la pieza, la levante hasta la posición de home y la coloque en otro lugar de la mesa, repitiendo el proceso contrario para volver a dejarla donde estaba. Ayúdate si quieres de VRS PartHandling para definir las localizaciones adecuadas de cogida y aproximación.