0% encontró este documento útil (0 votos)
58 vistas16 páginas

Programación de Robots KUKA en KRL

Este documento describe el programa para un robot KUKA que realiza un proceso de pick and place de cubos de Rubik en una caja. El robot espera a que se active un pulsador de marcha y luego llena secuencialmente la caja colocando los cubos en 9 posiciones diferentes mediante subprogramas individuales para cada posición. Un segundo robot envía señales para coordinar el proceso. Cuando la caja está llena, se activa una cinta transportadora para moverla.

Cargado por

Pau Romero bono
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas16 páginas

Programación de Robots KUKA en KRL

Este documento describe el programa para un robot KUKA que realiza un proceso de pick and place de cubos de Rubik en una caja. El robot espera a que se active un pulsador de marcha y luego llena secuencialmente la caja colocando los cubos en 9 posiciones diferentes mediante subprogramas individuales para cada posición. Un segundo robot envía señales para coordinar el proceso. Cuando la caja está llena, se activa una cinta transportadora para moverla.

Cargado por

Pau Romero bono
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 DOCX, PDF, TXT o lee en línea desde Scribd

2023

PICK AND PLACE EN KRL

PAU ROMERO / ALEX OLIVER


FLORIDA UNIVERSITARIA
2-2-2023
1

ÍNDICE
1 PROGRAMA ROBOT 1 EXPLICACIÓN.........................................2

1.1 PROGRAMA ROBOT 1..........................................................4

2 PROGRAMA ROBOT 2 EXPLICACIÓN.........................................9

2.1 PROGRAMA ROBOT 2........................................................10

3 CELL ROBOT 1.........................................................................14

4 CELL ROBOT 2.........................................................................14

5 CONFIG.DAT............................................................................15
2

1 PROGRAMA ROBOT 1 EXPLICACIÓN

En este programa hemos hecho que el KUKA espere a que se pulse el pulsador de
marcha, después espera a la señal del sensor que define si hay caja o no, entonces empieza a
ejecutar el subprograma de la cinta 1 que si el sensor1 no detecta cubo de Rubik esta se pone
en marcha hasta que detecte pieza. Cuando detecta pieza el KUKA llama al subprograma de
cogida de cubo que es igual para todas las piezas, este coge la pieza y se espera en la posición
de reposo a que entre el subprograma de dejar pieza. Este si que es distinto para cada pieza,
porque hemos decidido touchear todos los puntos haciendo un subprograma para cada pieza,
así si el Robot a mitad de el llenado de la caja se parara por algo para ponerlo en marcha
puedes hacer que empiece por el subprograma de la pieza en la que se ha quedado de la otra
forma si lo haces con relativos no puedes hacer que empiece a mitad del proceso tiene que
volver a empezar. En el ultimo subprograma que es el de la pieza 9 le hemos puesto que envíe
una señal de confirmación, para que se encienda la cinta2 que lleva la caja a la posición de
paletizado.

Todo esto va dentro de un Loop y para salir de este hay una condición que es que se
active el selector de paro, cuando lo actives terminará el Loop en el que esté y parará.
3
4

1.1 PROGRAMA ROBOT 1


DEF PIKANDPLACE ( )
DECL SENSOR_1() ; SENSOR CINTA 1 IN(1)
DECL SENSOR_2() ; SENSOR CINTA 2 IN(2)
DECL SENSOR_3() ; SENSOR CINTA 3 IN(3) FINAL DE RECORRIDO CAJA
DECL CAJA_LLENA() ; VARIABLE DE ORDEN CAJA LLENA

INI

PTP HOME Vel= 100 % DEFAULT


WAIT FOR ( IN 4 'PULSADORMARCHA' )
WAIT FOR $MOVE_ENABLE = TRUE
LOOP
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
MARCHA_CINTA2()
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
COGIDA CUBO()
DEJAR CUBO1() ; CUBO POSICIÓN 1
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO2() ; CUBO POSICIÓN 2
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO3() ; CUBO POSICIÓN 3
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO4() ; CUBO POSICIÓN 4
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO5() ; CUBO POSICIÓN 5
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO6() ; CUBO POSICIÓN 6
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO7() ; CUBO POSICIÓN 7
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
DEJAR CUBO8() ; CUBO POSICIÓN 8
MARCHA_CINTA1() ; LLAMADA MARCHA CINTA 1
WAIT FOR ( IN 10 'OK DEL ROBOT 2' )
COGIDA CUBO()
5

DEJAR CUBO9() ; CUBO POSICIÓN 9


MARCHA_CINTA2()
IF ( IN 5 'SELECTOR SALIR LO0P' ) THEN
EXIT
ENDIF
ENDLOOP
END
DEF MARCHA_CINTA1() ;CINTA CUBOS DE RUBIK
IF $IN[1] = TRUE THEN
OUT[1]= FALSE ELSE
OUT[1]= TRUE
ENDIF
END
DEF MARCHA_CINTA2() ;CINTA CAJAS
IF $IN[2] = FALSE THEN
OUT[2]'' = TRUE ELSE
OUT[2]'' = FALSE
ENDIF
IF $IN[2] = TRUE AND CAJA_LLENA = TRUE AND $IN[3] = FALSE THEN
OUT[2]'' = TRUE ELSE
OUT[2]'' = FALSE
ENDIF
END
DEF COGIDA CUBO() ; COGER UN CUBO DE RUBIK
WAIT FOR ( IN 1 'SENSOR1 CINTA1' )
PTP PUNTO1 Vel=100 % PDAT1 Tool[1] Base[1]
LIN PUNTO2 Vel=2 m/s CPDAT1 Tool[1] Base[1]
WAIT Time= 1.0 sec
OUT[3]'' = TRUE ; COGER CUBO VENTOSA
WAIT Time= 1.0 sec
SLIN PUNTO3 Vel=2 m/s CPDAT4 Tool[1] Base[1]
END
DEF DEJAR CUBO1() ; DEJAR CUBO DE RUBIK POSICIÓN1
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO5 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec

SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]


PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO2() ; DEJAR CUBO DE RUBIK POSICIÓN2
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO9 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
6

OUT[3]'' = FALSE ; DEJAR CUBO


WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END

DEF DEJAR CUBO3() ; DEJAR CUBO DE RUBIK POSICIÓN3


SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO10 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec

SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]

PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]

PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]

PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]


; VUELTA POSICIÓN ESPERA
END

DEF DEJAR CUBO4() ; DEJAR CUBO DE RUBIK POSICIÓN4


SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO11 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec

SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]


PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END

DEF DEJAR CUBO5() ; DEJAR CUBO DE RUBIK POSICIÓN5


SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO12 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
7

OUT[3]'' = FALSE ; DEJAR CUBO


WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]

PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]

PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]


; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO6() ; DEJAR CUBO DE RUBIK POSICIÓN6
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO13 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END
DEF DEJAR CUBO7() ; DEJAR CUBO DE RUBIK POSICIÓN7
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO14 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
END

DEF DEJAR CUBO8() ; DEJAR CUBO DE RUBIK POSICIÓN8


SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO15 Vel=100 % PDAT2 Tool[1] Base[1]

SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]


; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
8

END
DEF DEJAR CUBO9() ; DEJAR CUBO DE RUBIK POSICIÓN9
SCIRC P1 PUNTO4 Vel=2 m/s CPDAT5 Tool[1] Base[1]
; GIRO AL PUNTO DE DEJADA DEL CUBO
PTP PUNTO16 Vel=100 % PDAT2 Tool[1] Base[1]
SLIN PUNTO6 Vel=2 m/s CPDAT6 Tool[1] Base[1]
; POSICIONA AL PUNTO DE DEJADA
WAIT Time= 1.0 sec
OUT[3]'' = FALSE ; DEJAR CUBO
WAIT Time= 1.0 sec
SLIN PUNTO7 Vel=2 m/s CPDAT7 Tool[1] Base[1]
PTP PUNTO8 Vel=100 % PDAT3 Tool[1] Base[1]
PTP PUNTO9 Vel=100 % PDAT4 Tool[1] Base[1]
PTP PUNTO1 Vel=100 % PDAT5 Tool[1] Base[1]
; VUELTA POSICIÓN ESPERA
OUT[5]'' = TRUE ; ORDEN CAJA LLENA
END
9

2 PROGRAMA ROBOT 2 EXPLICACIÓN

En este programa hemos hecho que primero revise el sensor de caja lista para paletizar
para que si no hay caja de el OK DEL ROBOT 2 al robot uno para que empiece a hacer el
ciclo. El robot 2 espere a que el sensor caja en posición de paletizado del subprograma de
coger caja este en true para que el Robot 2 empiece a posicionarse para coger la caja
luego baja coge la caja, sube y se queda en la posición de reposo hasta que entra en el
subprograma de dejar la caja. Esta gira y deja la caja en la posición 1, como en el Robot 1
hemos toucheado todas las posiciones de las 5 cajas para que si se parase se pueda iniciar
desde cualquier punto del programa. Luego el robot sube vuelve a girar y se queda en la
posición de espera para la siguiente caja.

Todo esto va dentro de un Loop y para salir de este hay una condición que es que se
active el selector de paro, cuando lo actives terminará el Loop en el que esté y parará.
10

2.1 PROGRAMA ROBOT 2


DEF PIKANDPLACEROBOT2 ( )
INI

PTP HOME Vel= 100 % DEFAULT


WAIT FOR $MOVE_ENABLE = TRUE
LOOP
OK DEL ROBOT 2()
COGER CAJA ()
DEJAR CAJA 1()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 2()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 3()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 4()
OK DEL ROBOT 2 ()
COGER CAJA()
DEJAR CAJA 5()
OK DEL ROBOT 2 ()
IF ( IN 1 'SELECTOR SALIR DEL LO0P' ) = FALSE THEN
EXIT
ENDIF
ENDLOOP

PTP HOME Vel= 100 % DEFAULT

END
DEF COGER CAJA()
WAIT FOR ( IN 3 'SENSOR FINAL DE CINTA 2' )

PTP POSICIÓN ENCIMA DE CAJA Vel=100 % PDAT1 Tool[2] Base[2]

LIN BAJAR PARA COGER CAJA Vel=2 m/s CPDAT1 Tool[2] Base[2]

WAIT Time= 1.0 sec

CERRAR GARRA()

WAIT Time= 1.0 sec

LIN SUBIR CAJA Vel=2 m/s CPDAT2 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
END
DEF DEJAR CAJA 1()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]


;GIRAR A LA POSICIÓN DE DEJAR CAJA
11

LIN BAJAR PARA DEJAR CAJA 1 Vel=2 m/s CPDAT3 Tool[2] Base[2]

WAIT Time= 1.0 sec

ABRIR GARRA()

WAIT Time= 1.0 sec

LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]


;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 2()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]


;GIRAR A LA POSICIÓN DE DEJAR CAJA

LIN BAJAR PARA DEJAR CAJA 2 Vel=2 m/s CPDAT3 Tool[2] Base[2]

WAIT Time= 1.0 sec

ABRIR GARRA()

WAIT Time= 1.0 sec

LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]


;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 3()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]


;GIRAR A LA POSICIÓN DE DEJAR CAJA

LIN BAJAR PARA DEJAR CAJA 3 Vel=2 m/s CPDAT3 Tool[2] Base[2]

WAIT Time= 1.0 sec

ABRIR GARRA()
12

WAIT Time= 1.0 sec

LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]


;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 4()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2]


;GIRAR A LA POSICIÓN DE DEJAR CAJA

LIN BAJAR PARA DEJAR CAJA 4 Vel=2 m/s CPDAT3 Tool[2] Base[2]

WAIT Time= 1.0 sec

ABRIR GARRA()

WAIT Time= 1.0 sec

LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]


;VOLVER POSICIÓN INICIAL
END
DEF DEJAR CAJA 5()
PTP GIRAR A PUNTO 1 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 3 Vel=100 % PDAT3 Tool[2] Base[2] extTCP


;GIRAR A LA POSICIÓN DE DEJAR CAJA

LIN BAJAR PARA DEJAR CAJA 5 Vel=2 m/s CPDAT3 Tool[2] Base[2]

WAIT Time= 1.0 sec

ABRIR GARRA()

WAIT Time= 1.0 sec

LIN SUBIR POSICIÓN VUELTA Vel=2 m/s CPDAT4 Tool[2] Base[2]


;SUBIR CAJA A POSICIÓN DE GIRO
13

PTP GIRAR A PUNTO 3 Vel=100 % PDAT2 Tool[2] Base[2]

PTP GIRAR A PUNTO 2 Vel=100 % PDAT3 Tool[2] Base[2]

PTP GIRAR A PUNTO 1 Vel=100 % PDAT3 Tool[2] Base[2]


;VOLVER POSICIÓN INICIAL
END
DEF OK DEL ROBOT 2()
IF ( IN 3 'SENSOR FINAL DE CINTA 2' ) = FALSE THEN
(OUT 5 'OK DEL ROBOT 2' ) = TRUE ELSE
(OUT 5 'OK DEL ROBOT 2' ) = FALSE
ENDIF
END
DEF ABRIR GARRA()
OUT[13]'' = FALSE ; CERRAR GARRA
OUT [14]'' = FALSE ; ABRIR GARRA
OUT [14]'' = TRUE ; ABRIR GARRA
END
DEF CERRAR GARRA()
OUT[13]'' = FALSE ; CERRAR GARRA
OUT [14]'' = FALSE ; ABRIR GARRA
OUT [13]'' = TRUE ; ABRIR GARRA
END
14

3 CELL ROBOT 1
DEF CELL ( )
EXT PIKANDPLACEROBOT1 ( )
INIT
BASISTECH INI
CHECK HOME
PTP HOME Vel= 100 % DEFAULT
AUTOEXT INI
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
PIKANDPLACEROBOT1 ( )
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE2 ( ) ; Call User-Program
CASE 3
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE3 ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END

4 CELL ROBOT 2

DEF CELL ( )
EXT PIKANDPLACEROBOT 2 ( )
INIT
BASISTECH INI
CHECK HOME
PTP HOME Vel= 100 % DEFAULT
AUTOEXT INI
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
PIKANDPLACEROBOT 2 ( )
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE2 ( ) ; Call User-Program
CASE 3
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE3 ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END
15

5 CONFIG.DAT

En este caso como hemos direccionado todo a salidas y entradas físicas no tenemos
variables.
DEFDAT $CONFIG
BASISTECH GLOBALS
AUTOEXT GLOBALS
USER GLOBALS
;*******************************************
;Make your modifications -ONLY- here
;*******************************************
;==================================
; Userdefined Types
;==================================

;==================================
; Userdefined Externals
;==================================

;==================================
; Userdefined Variables
;==================================
ENDDAT

También podría gustarte