Você está na página 1de 18

DISA – UPV ROBÓTICA

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

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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:

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


DISA – UPV ROBÓTICA

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

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


DISA – UPV ROBÓTICA

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

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


DISA – UPV ROBÓTICA

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:

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


DISA – UPV ROBÓTICA

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>

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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

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


DISA – UPV ROBÓTICA

• 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):

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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.

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


DISA – UPV ROBÓTICA

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.

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

Você também pode gostar